[
  {
    "id": "tab_knx_rf_sample",
    "type": "tab",
    "label": "KNX Router Filter sample",
    "disabled": false,
    "info": ""
  },
  {
    "id": "cmt_knx_rf_1",
    "type": "comment",
    "z": "tab_knx_rf_sample",
    "name": "This flow simulates RAW telegram objects and shows filtering + rewrite without needing a KNX bus.",
    "info": "",
    "x": 390,
    "y": 40,
    "wires": []
  },
  {
    "id": "inj_knx_rf_allowed",
    "type": "inject",
    "z": "tab_knx_rf_sample",
    "name": "Allowed GA 0/0/7",
    "props": [
      {
        "p": "topic",
        "vt": "str"
      }
    ],
    "topic": "",
    "once": false,
    "onceDelay": 0.1,
    "x": 160,
    "y": 140,
    "wires": [
      [
        "fn_knx_rf_build_allowed"
      ]
    ]
  },
  {
    "id": "fn_knx_rf_build_allowed",
    "type": "function",
    "z": "tab_knx_rf_sample",
    "name": "Build RAW telegram (allowed)",
    "func": "return {\n  payload: {\n    knx: {\n      event: 'GroupValue_Write',\n      source: '1.1.10',\n      destination: '0/0/7',\n      apdu: { data: { type: 'Buffer', data: [1] }, bitlength: 1, hex: '01' },\n      cemi: { hex: '' },\n      echoed: false\n    }\n  }\n};",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "x": 390,
    "y": 140,
    "wires": [
      [
        "node_knx_router_filter"
      ]
    ]
  },
  {
    "id": "inj_knx_rf_blocked",
    "type": "inject",
    "z": "tab_knx_rf_sample",
    "name": "Blocked GA 3/3/3",
    "props": [
      {
        "p": "topic",
        "vt": "str"
      }
    ],
    "topic": "",
    "once": false,
    "onceDelay": 0.1,
    "x": 160,
    "y": 200,
    "wires": [
      [
        "fn_knx_rf_build_blocked"
      ]
    ]
  },
  {
    "id": "fn_knx_rf_build_blocked",
    "type": "function",
    "z": "tab_knx_rf_sample",
    "name": "Build RAW telegram (blocked)",
    "func": "return {\n  payload: {\n    knx: {\n      event: 'GroupValue_Write',\n      source: '1.1.10',\n      destination: '3/3/3',\n      apdu: { data: { type: 'Buffer', data: [1] }, bitlength: 1, hex: '01' },\n      cemi: { hex: '' },\n      echoed: false\n    }\n  }\n};",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "x": 390,
    "y": 200,
    "wires": [
      [
        "node_knx_router_filter"
      ]
    ]
  },
  {
    "id": "node_knx_router_filter",
    "type": "knxUltimateRouterFilter",
    "z": "tab_knx_rf_sample",
    "name": "Filter + rewrite",
    "allowWrite": true,
    "allowResponse": true,
    "allowRead": true,
    "gaMode": "allow",
    "gaPatterns": "0/0/*",
    "srcMode": "off",
    "srcPatterns": "",
    "rewriteGA": true,
    "gaRewriteRules": "0/0/* => 2/0/*",
    "rewriteSource": true,
    "srcRewriteRules": "1.1.* => 1.2.*",
    "x": 590,
    "y": 170,
    "wires": [
      [
        "dbg_knx_rf_passed"
      ],
      [
        "dbg_knx_rf_dropped"
      ]
    ]
  },
  {
    "id": "dbg_knx_rf_passed",
    "type": "debug",
    "z": "tab_knx_rf_sample",
    "name": "Passed (check payload.knx + payload.knxRouterFilter)",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "payload",
    "targetType": "msg",
    "x": 880,
    "y": 140,
    "wires": []
  },
  {
    "id": "dbg_knx_rf_dropped",
    "type": "debug",
    "z": "tab_knx_rf_sample",
    "name": "Dropped (reason in payload.knxRouterFilter)",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "payload",
    "targetType": "msg",
    "x": 880,
    "y": 200,
    "wires": []
  }
]

